package com.baitai.system.mapper;

import java.util.Date;
import java.util.List;
import com.baitai.system.domain.ProductOrders;
import com.baitai.system.domain.ProductOrderDetails;
import org.apache.ibatis.annotations.Param;

/**
 * 商品订单Mapper接口
 * 
 * @author xx
 * @date 2024-07-21
 */
public interface ProductOrdersMapper 
{
    /**
     * 查询商品订单
     * 
     * @param orderId 商品订单主键
     * @return 商品订单
     */
    public ProductOrders selectProductOrdersByOrderId(Long orderId);

    /**
     * 查询商品订单列表
     * 
     * @param productOrders 商品订单
     * @return 商品订单集合
     */
    public List<ProductOrders> selectProductOrdersList(ProductOrders productOrders);

    /**
     * 新增商品订单
     * 
     * @param productOrders 商品订单
     * @return 结果
     */
    public int insertProductOrders(ProductOrders productOrders);

    /**
     * 修改商品订单
     * 
     * @param productOrders 商品订单
     * @return 结果
     */
    public int updateProductOrders(ProductOrders productOrders);

    /**
     * 删除商品订单
     * 
     * @param orderId 商品订单主键
     * @return 结果
     */
    public int deleteProductOrdersByOrderId(Long orderId);

    /**
     * 批量删除商品订单
     * 
     * @param orderIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteProductOrdersByOrderIds(Long[] orderIds);

    /**
     * 批量删除订单明细
     * 
     * @param orderIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteProductOrderDetailsByOrderIds(Long[] orderIds);
    
    /**
     * 批量新增订单明细
     * 
     * @param productOrderDetailsList 订单明细列表
     * @return 结果
     */
    public int batchProductOrderDetails(List<ProductOrderDetails> productOrderDetailsList);
    

    /**
     * 通过商品订单主键删除订单明细信息
     * 
     * @param orderId 商品订单ID
     * @return 结果
     */
    public int deleteProductOrderDetailsByOrderId(Long orderId);


    /**
     * 查询商品订单列表
     *
     * @param productOrders 商品订单
     * @return 商品订单集合
     */
    public List<ProductOrders> appList(ProductOrders productOrders);

    ProductOrders selectProductOrdersByOrderNumber(@Param("orderNumber") String orderNumber);

    List<ProductOrders> verify(@Param("start") Date start, @Param("end")Date end, @Param("userId")Long userId);
}
